package com.jlf.controller.sample.entity.criteria;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jlf.core.server.entity.Q;
import com.jlf.sample.auto.generate.domain.Sample1DO;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;

/**
 * sample1的查询条件
 *
 * @author wujr
 * 2023/7/21
 * @version 1.0
 * 【变更历史】
 * [wujr 2023/7/21 1.0 新增]
 */
@Getter
@Setter
public class Sample1Criteria implements Q<Sample1DO> {
    private Short gender;
    private String key;
    private final N n = new N();
    private final L l = new L();
    private final Nl nl = new Nl();


    @Getter
    @Setter
    public static class N{
        private Short gender;
    }
    @Getter
    @Setter
    public static class L{
        private String key;
    }
    @Getter
    @Setter
    public static class Nl{
        private String key;
    }

    @Override
    public void build(QueryWrapper<Sample1DO> wrapper) {
        LambdaQueryWrapper<Sample1DO> lambda = wrapper.lambda();

        if (gender != null){
            lambda.eq(Sample1DO::getGender, gender);
        }
        if (StringUtils.isNotBlank(key)){
            lambda.and(w -> w.eq(Sample1DO::getName, key).or().eq(Sample1DO::getNickname, key));
        }
        if (StringUtils.isNotBlank(l.key)){
            lambda.and(w -> w.like(Sample1DO::getName, l.key).or().eq(Sample1DO::getNickname, l.key));
        }
//        wrapper.lambda().eq(gender != null, Sample1DO::getGender, gender)
//                .and(!StringUtils.isBlank(key), w -> w.eq(Sample1DO::getName, key).or().eq(Sample1DO::getNickname, key))
//                .and(!StringUtils.isBlank(l.key), w -> w.like(Sample1DO::getName, l.key).or().eq(Sample1DO::getNickname, l.key))
//                .ne(n.getGender() != null, Sample1DO::getGender, n.getGender())
//                .and(!StringUtils.isBlank(nl.key), w -> w.notLike(Sample1DO::getName, nl.getKey()).or().notLike(Sample1DO::getNickname, nl.getKey()));
    }
}
